A typical method of generating a process model is by using a general-purpose modeling language that is not specific to any particular domain. However, when general-purpose modeling languages are used to define process models for particular domains, additional, domain-specific information is typically required for the model. Typically, domain-specific information is captured in a process model by applying modifiers to elements within the process model. The modifiers can provide additional properties for elements which were not defined for the element type in the modeling language. However, modifiers in general-purpose model languages have several limitations.
First, such modifiers are generally not dynamic, and the values specified by the modifiers typically need to be propagated across all elements associated with the modifier. This is generally a problem in situations where many elements have the same value for a property. For example, in the typical case where multiple elements in the process model are modified using the same modifier, general purpose languages typically require that any changes in the modifier be applied separately to all of these elements. Because the number of elements can be quite large in some process models, this is typically a large time-consuming and resource-consuming operation. Furthermore, such an approach generally cannot be efficiently scaled to deal with large process models having many modifiers and many properties defined in the modifiers.
Second, it is difficult to extend a modifier with new properties if there is no mechanism by which modifiers can be directly altered (which is often the case when modifiers are pre-defined in a general purpose modeling language). Typically, general-purpose modeling languages store a new property for an existing modifier in a profile by creating a second modifier in a second profile, which subclasses the original modifier and which can be used to replace the original profile. However, this approach still generally requires that the old modifier be unapplied and that the new modifier be applied on an element-by-element basis, which can be time-consuming if the process model is large or includes a large number of elements.
Alternatively, a new modifier that defines additional properties can be created without any relation to the original modifier and both modifiers can be applied to the applicable elements. However, such an approach typically requires going through the process model to apply this new modifier to existing elements. Furthermore, such an approach generally results in elements having at least two separate, unrelated modifiers for storing properties are in fact related to one another. Accordingly, any context that needs to know about the properties of a element needs to be additionally informed that the new modifier also contains properties associated with the profile, even though it is not associated in the process model to the profile or the original modifier.
Therefore, what is needed is a system and method for managing modifiers in process models that facilitate application of modifiers and extensibility of modifiers in large scale process models.